// components/classic/music/index.js
import {
  classicBeh
} from '../classic-beh.js'

const mMgr = wx.getBackgroundAudioManager()

Component({
  /**
   * 组件的属性列表, 开启音乐/音乐封面旋转；关闭音乐/音乐封面停止旋转
   * 小程序提供了一套动画API/CSS3也可以写动画 (css3/canvas)游戏中常用
   */
  behaviors: [classicBeh],
  properties: {
    src: String,
    title: String
  },

  /**
   * 组件的初始数据
   */
  data: {
    playing: false,
    pauseSrc: 'images/player@pause.png',
    playSrc: 'images/player@play.png'
  },

  /**
   * 组件的方法列表
   */
  methods: {
    onPlay(event) {
      // 图片切换
      if (!this.data.playing) {
        this.setData({
          playing: true
        })
        mMgr.title = this.properties.title
        mMgr.src = this.properties.src
      } else {
        this.setData({
          playing: false
        })
        mMgr.pause()
      }
    },
    _recoverStatus:function() {
      if (mMgr.paused) {
        this.setData({
          playing: false
        })
        return 
      }
      if (mMgr.src == this.properties.src) {
        this.setData({
          playing: true
        })
      }
    },
    //监控音乐主开关状态改变自定义开关的状态
    _monitorSwitch:function() {
      mMgr.onPlay(() => {
        this._recoverStatus()
      })
      mMgr.onPause(() => {
        this._recoverStatus()
      })
      mMgr.onStop(() => {
        //人为关闭主音乐界面，mMgr.paused=true
        this._recoverStatus()
      })
      mMgr.onEnded(() => {
        this._recoverStatus()
      })
    }
  },
  attached: function (event) {//不要在生命周期中写具体的业务逻辑，业务逻辑用取名有意义的函数封装，周期函数调用
    //小程序不要过多的使用跳转页面的方式，尽量在当前页面（classicPage）实现业务的切换
    //当前页面进行业务切换，wx:if 和 hidden的使用频率就会增加（注意性能，细节）
    this._recoverStatus()
  },
  created: function (event) {
    this._monitorSwitch()
  }

})